package datastructure.sort.sortmethod;

/**
 * 所有方法的基类  之后的排序算法都需要在上面进行重写
 * Created by tanlee on 2016/3/17.
 */
public abstract class BaseSort {

    /**
     * 默认的排序的方法,之后的子类都需要进行继承
     * @param a
     */
    public abstract void sort(Comparable[] a);

    /**
     * 进行比较需要所谓的对比进行处理
     * @param a
     * @param b
     * @return
     */
    public boolean less(Comparable a,Comparable b){
        return a.compareTo(b) < 0;
    }

    /**
     * 对两个数进行交换
     * @param a
     * @param position1
     * @param position2
     */
    public void exchange(Comparable[] a,int position1,int position2){
        Comparable temp = a[position1];
        a[position1] = a[position2];
        a[position2] = temp;
    }

    /**
     * 判断是否有序
     * @param a
     * @return
     */
    public boolean isSorted(Comparable[] a){
        for(int i=0;i<a.length-1;i++){
            if(less(a[i+1],a[i])){
                return false;
            }
        }
        return true;
    }

    /**
     * 打印所有的队列
     * @param a
     */
    public void show(Comparable[] a){
        for(int i=0;i<a.length;i++){
            System.out.println(a[i] + "");
        }
    }
}
